const { Model, DataTypes } = require('sequelize');
const sequelize = require('../db/db');

class User extends Model { }

User.init(
  {
    user_id: {
      type: DataTypes.CHAR(18),  // 使用 CHAR(18)
      allowNull: false,          // 不允许为空
      primaryKey: true,       // 主键
    },
    user_name: {
      type: DataTypes.STRING(50), // 登录账号
      allowNull: false,           // 不允许为空
    },
    role_type: {
      type: DataTypes.TINYINT,   // 用户类型，0 表示管理员，1 表示用户
      allowNull: false,          // 不允许为空
    },
    nickname: {
      type: DataTypes.STRING(255), // 昵称
      allowNull: true,          // 允许为空
    },
    sex: {
      type: DataTypes.TINYINT,   // 性别，0 表示女，1 表示男 2 表示未知
      allowNull: true,          // 允许为空
      defaultValue: 2,           // 初始值是 2
    },
    password: {
      type: DataTypes.STRING(255), // 密码
      allowNull: false,          // 不允许为空
    },
    create_time:{
      type: DataTypes.DATE,     // 创建时间
      allowNull: true,          // 允许为空
      defaultValue: DataTypes.NOW, // 初始值是当前时间
    },
    last_login: {
      type: DataTypes.DATE,     // 最后登录时间
      allowNull: true,          // 允许为空
    },
  },
  {
    sequelize,                   // Sequelize 实例
    modelName: 'User',           // 模型名称
    tableName: 'user',           // 表名为 'user'
    timestamps: false,           // 如果没有 `createdAt` 和 `updatedAt` 字段，可以设置为 false
  }
);

// 关联关系（与评论）
User.hasMany(require('./QuestionComment'), {
  foreignKey: 'user_id',
  sourceKey: 'user_id',
  as: 'comments'
});

// 关联关系（与评论点赞）
User.hasMany(require('./CommentLike'), {
  foreignKey: 'user_id',
  sourceKey: 'user_id',
  as: 'commentLikes'
});

module.exports = User;